<html>
<head><meta charset="utf-8"><title>Using perf as a replacement for library microbenchmarks · t-compiler/performance · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/index.html">t-compiler/performance</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html">Using perf as a replacement for library microbenchmarks</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="246105729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246105729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246105729">(Jul 15 2021 at 14:54)</a>:</h4>
<p>I would like to point out a pretty concerning in my opinion trend – people are increasingly using perf runs as a stand-in to evaluate changes to the library, where a microbenchmark of the function in question is much more appropriate.</p>



<a name="246105912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246105912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246105912">(Jul 15 2021 at 14:55)</a>:</h4>
<p>By "the library" here, do you mean std?</p>



<a name="246105936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246105936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246105936">(Jul 15 2021 at 14:55)</a>:</h4>
<p>Sure.</p>



<a name="246106043"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106043" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106043">(Jul 15 2021 at 14:56)</a>:</h4>
<p>The idea in running perf runs is "hoping" that the compiler uses the changed APIs in any significant way.</p>



<a name="246106078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106078">(Jul 15 2021 at 14:56)</a>:</h4>
<p>I'll agree that perf.rlo runs are bad way to gauge changes to std when it comes to perf.</p>



<a name="246106097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106097">(Jul 15 2021 at 14:56)</a>:</h4>
<p>I don't have insight into whether this is a growing trend though</p>



<a name="246106169"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106169" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106169">(Jul 15 2021 at 14:57)</a>:</h4>
<p>I'm happy to start collecting these instances. I did comment to that effect a couple times on separate PRs.</p>



<a name="246106198"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106198" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106198">(Jul 15 2021 at 14:57)</a>:</h4>
<p>I think those that work on perf.rlo see it as a tool for measuring compiler performance and changes to the _compiler_</p>



<a name="246106202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106202">(Jul 15 2021 at 14:57)</a>:</h4>
<p>I wonder what it would take to support <code>x.py bench</code>?</p>



<a name="246106290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106290">(Jul 15 2021 at 14:58)</a>:</h4>
<p>And <code>#[bench]</code> functions within the compiler.</p>



<a name="246106304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106304">(Jul 15 2021 at 14:58)</a>:</h4>
<p>That would make microbenchmarks much more appealing.</p>



<a name="246106325"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106325" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106325">(Jul 15 2021 at 14:58)</a>:</h4>
<p>Perhaps we can note somewhere that perf.rlo runs are largely meant for compiler performance checking and that while it cannot hurt to run it for std changes, a lack of performance change in the compiler does not mean the std change did not introduce performance regressions to std itself</p>



<a name="246106354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nagisa <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106354">(Jul 15 2021 at 14:58)</a>:</h4>
<p><a href="https://github.com/rust-lang/rust/pull/83403">https://github.com/rust-lang/rust/pull/83403</a> is an example of this I feel, and <span class="user-mention" data-user-id="239881">@Josh Triplett</span> mentions another PR in relation to <code>Vec</code> which I imagine was evaluated in much the similar way.</p>



<a name="246106460"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106460" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106460">(Jul 15 2021 at 14:59)</a>:</h4>
<p>I wonder too if we could auto detect this case from the bot, and issue a warning</p>



<a name="246106821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106821">(Jul 15 2021 at 15:00)</a>:</h4>
<p>Changes to existing vec code paths do have significant impact on the compiler though.</p>



<a name="246106942"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106942" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106942">(Jul 15 2021 at 15:01)</a>:</h4>
<p>Yeah, I specifically did a perf run for that PR because I thought it might have an outsized impact on the compiler itself.</p>



<a name="246106960"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246106960" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246106960">(Jul 15 2021 at 15:01)</a>:</h4>
<p>e.g. <a href="https://github.com/rust-lang/rust/issues/86938">#86938</a></p>



<a name="246107089"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246107089" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246107089">(Jul 15 2021 at 15:01)</a>:</h4>
<p>I think the point still stands even if this particular case isn't too egregious</p>



<a name="246107492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246107492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246107492">(Jul 15 2021 at 15:04)</a>:</h4>
<p><em>nod</em>, I've absolutely seen people use a perf run as a substitute for a better benchmark, in cases where there's no particular reason to believe that the compiler is calling the function in question at all.</p>



<a name="246107565"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246107565" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246107565">(Jul 15 2021 at 15:05)</a>:</h4>
<p>I think it'd be perfectly valid to detect a perf invocation on a PR that doesn't change anything outside of the standard library, and print a warning sentence.</p>



<a name="246107591"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246107591" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246107591">(Jul 15 2021 at 15:05)</a>:</h4>
<blockquote>
<p>I wonder what it would take to support x.py bench?</p>
</blockquote>
<p><code>#[bench]</code> only measures wall time and on top has a self-tuning number of rounds. I think it would require changes to the test harness to run each benchmark with perf counters.</p>



<a name="246107709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246107709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246107709">(Jul 15 2021 at 15:06)</a>:</h4>
<p>In the cargo meeting the other day, we talked about the idea of replacing the existing bench framework with something like criterion or similar, by way of striving towards stability.</p>



<a name="246108240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246108240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246108240">(Jul 15 2021 at 15:09)</a>:</h4>
<p>also, getting meaningful results locally is hard. I have to disable clock boosts, pin the benchmark to single core, set CGU=1 and disable incremental compilation. which of course makes things extremely slow. so I actually need to do two passes, once to compile the std changes and another one to run it pinned.</p>



<a name="246108334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246108334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246108334">(Jul 15 2021 at 15:10)</a>:</h4>
<p>since it's measuring wall-time</p>



<a name="246108479"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246108479" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246108479">(Jul 15 2021 at 15:11)</a>:</h4>
<p>And even then I sometimes ask myself whether I'm just fiddling with the knobs until I get nice-looking results. Which means I end up comparing things with perf record/report instead.</p>



<a name="246108681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246108681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246108681">(Jul 15 2021 at 15:13)</a>:</h4>
<p>comparing <code>perf report</code> output also requires CGUs=1, otherwise minor inlining changes will make results uncomparable.</p>



<a name="246109255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246109255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246109255">(Jul 15 2021 at 15:17)</a>:</h4>
<p>The microbenchmarks work fine to identify a 2x or 10x improvement, but for something like 20% improvement you have to jump through hoops to make sure it's not noise or the compiler just rearranging things randomly.</p>
<p>Yesterday I had a -44% change in iterator code that disappeared once I flipped all the switches to get more reliable benchmarks.</p>



<a name="246110743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246110743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246110743">(Jul 15 2021 at 15:27)</a>:</h4>
<p><span class="user-mention" data-user-id="239881">@Josh Triplett</span>  <code>x.py bench --stage 0 library/std</code> already works fine</p>



<a name="246110843"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246110843" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246110843">(Jul 15 2021 at 15:28)</a>:</h4>
<p><span class="user-mention" data-user-id="232545">@Joshua Nelson</span> ! Well then. That's awesome.</p>



<a name="246110845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246110845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246110845">(Jul 15 2021 at 15:28)</a>:</h4>
<p>Oh, I read that as including its results in perf rlo</p>



<a name="246110848"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246110848" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246110848">(Jul 15 2021 at 15:28)</a>:</h4>
<p>What would be <em>really</em> cool is to hook rustc-perf up to x.py bench somehow so you don't have to fiddle with it yourself</p>



<a name="246110867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246110867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246110867">(Jul 15 2021 at 15:28)</a>:</h4>
<p><span class="user-mention" data-user-id="232545">@Joshua Nelson</span> yes, that's what I was about to ask for.</p>



<a name="246110909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246110909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246110909">(Jul 15 2021 at 15:29)</a>:</h4>
<p><code>@bors try @rust-timer bench</code></p>



<a name="246110961"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246110961" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246110961">(Jul 15 2021 at 15:29)</a>:</h4>
<p>I don't understand how that's related to my suggestion</p>



<a name="246110981"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246110981" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246110981">(Jul 15 2021 at 15:29)</a>:</h4>
<p>(nor how it differs from <code>queue</code>)</p>



<a name="246111153"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111153" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111153">(Jul 15 2021 at 15:30)</a>:</h4>
<p>Because it runs the microbenchmarks instead of the compiler perf suite?</p>



<a name="246111248"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111248" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111248">(Jul 15 2021 at 15:31)</a>:</h4>
<p>I think I interpreted "hook rustc-perf up" as "hook the bot that runs rustc-perf up".</p>



<a name="246111252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111252">(Jul 15 2021 at 15:31)</a>:</h4>
<p>Oh I see you want the reverse, you want to run x.py bench on PRs</p>



<a name="246111279"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111279" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111279">(Jul 15 2021 at 15:31)</a>:</h4>
<p>I was suggesting that x.py locally runs rustc-perf</p>



<a name="246111293"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111293" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111293">(Jul 15 2021 at 15:31)</a>:</h4>
<p>Ah, I understand now.</p>



<a name="246111361"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111361" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111361">(Jul 15 2021 at 15:32)</a>:</h4>
<p>Yes, I would love to have a simpler way to run the perf suite locally, too.</p>



<a name="246111471"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111471" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111471">(Jul 15 2021 at 15:32)</a>:</h4>
<p>I guess the advantage of your suggestion is that you get a more reproducible environment? But it seems like if we can do that in CI we should be able to do that locally too, at least if we prompt the user to close everything else that's open</p>



<a name="246111484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111484">(Jul 15 2021 at 15:32)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/247081-t-compiler.2Fperformance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks/near/246111361">said</a>:</p>
<blockquote>
<p>Yes, I would love to have a simpler way to run the perf suite locally, too.</p>
</blockquote>
<p>I have this on my list to work on. It is actually pretty easy now.</p>



<a name="246111571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111571">(Jul 15 2021 at 15:33)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> hmm I'm surprised to hear that, I'll have to try it out this weekend</p>



<a name="246111573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111573">(Jul 15 2021 at 15:33)</a>:</h4>
<p>I would also love to see the microbenchmark suite become a default part of the perf suite, to help detect cases where compilation becomes faster but the compiled code becomes slower, or vice versa. That's separate from wanting a way to invoke just the microbenchmark suite on a PR that we don't expect to affect compile time at all.</p>



<a name="246111655"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111655" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111655">(Jul 15 2021 at 15:33)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/247081-t-compiler.2Fperformance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks/near/246111571">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="224872">rylev</span> hmm I'm surprised to hear that, I'll have to try it out this weekend</p>
</blockquote>
<p>Please file bugs. self-profile doesn't work locally unfortunately</p>



<a name="246111706"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111706" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111706">(Jul 15 2021 at 15:34)</a>:</h4>
<blockquote>
<p>But it seems like if we can do that in CI we should be able to do that locally too, at least if we prompt the user to close everything else that's open</p>
</blockquote>
<p>See my previous comments about running #[bench] correctly being hard.</p>



<a name="246111715"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111715" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111715">(Jul 15 2021 at 15:34)</a>:</h4>
<p>And of course any of this benchmark stuff doesn't exist yet</p>



<a name="246111840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111840">(Jul 15 2021 at 15:34)</a>:</h4>
<p><span class="user-mention" data-user-id="330154">@The 8472</span> right: my point is that x.py could do all those things automatically</p>



<a name="246111883"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111883" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111883">(Jul 15 2021 at 15:35)</a>:</h4>
<p>(it can't fix being slow though)</p>



<a name="246111891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111891">(Jul 15 2021 at 15:35)</a>:</h4>
<p>it can't disable turbo since that requires root privs. at least it would need a small suid helper for that</p>



<a name="246111935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246111935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246111935">(Jul 15 2021 at 15:35)</a>:</h4>
<p>Sure, we can say "run this command as sudo" and exit with an error or something</p>



<a name="246112065"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112065" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112065">(Jul 15 2021 at 15:36)</a>:</h4>
<p>I guess this would be quite difficult to get working on Windows</p>



<a name="246112079"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112079" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112079">(Jul 15 2021 at 15:36)</a>:</h4>
<p>And non-trivial on Mac</p>



<a name="246112209"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112209" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112209">(Jul 15 2021 at 15:37)</a>:</h4>
<p>sudo isn't the right choice, it can leave root-owned files behind. a helper binary to only do the minimal privileged stuff necessary would be right.</p>
<p>that or getting #[bench] to use perf counters instead of wall time</p>



<a name="246112237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112237">(Jul 15 2021 at 15:37)</a>:</h4>
<p>+1 using perf counters seems like the right approach</p>



<a name="246112242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112242">(Jul 15 2021 at 15:37)</a>:</h4>
<p>That's what rustc-perf uses</p>



<a name="246112266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112266">(Jul 15 2021 at 15:38)</a>:</h4>
<p>Oh wait I think we're talking about different things</p>



<a name="246112340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112340">(Jul 15 2021 at 15:38)</a>:</h4>
<p>Perf counters shouldn't depend too much on pinning a separate core and all that stuff</p>



<a name="246112370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112370">(Jul 15 2021 at 15:38)</a>:</h4>
<p>I'm talking about benchmarking the compiler locally, not libstd</p>



<a name="246112439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112439">(Jul 15 2021 at 15:39)</a>:</h4>
<p>running rustc-perf locally already works though. well, not all of it, but some of the benchmarks.</p>



<a name="246112503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112503">(Jul 15 2021 at 15:39)</a>:</h4>
<p>Sure, but it's annoying. I'm just suggesting that we have x.py bench figure out how to run things for you.</p>



<a name="246112529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112529">(Jul 15 2021 at 15:39)</a>:</h4>
<p>ah</p>



<a name="246112539"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112539" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112539">(Jul 15 2021 at 15:39)</a>:</h4>
<p>yes, totally different thing</p>



<a name="246112541"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112541" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112541">(Jul 15 2021 at 15:39)</a>:</h4>
<p>That way the UI is unified between rustc and libstd</p>



<a name="246112801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/247081-t-compiler/performance/topic/Using%20perf%20as%20a%20replacement%20for%20library%20microbenchmarks/near/246112801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> The 8472 <a href="https://rust-lang.github.io/zulip_archive/stream/247081-t-compiler/performance/topic/Using.20perf.20as.20a.20replacement.20for.20library.20microbenchmarks.html#246112801">(Jul 15 2021 at 15:41)</a>:</h4>
<p>that's a different topic though, this one is about std microbenchmarks</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>